/*
 * elrs.c
 *
 *  Created on: Jan 22, 2025
 *      Author: 35702
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


/*data1:数据数组
data_m:转化后数据存放数组
size:数据长度
return:*/
int return_0xdata(char * data1, int * data_m, int size) {
    char *tocken = strtok(data1, " ");
    int a = 0;
    while (tocken!= NULL && a < size) {
        int num = (int)strtol(tocken, NULL, 16);
        data_m[a] = num;
        tocken = strtok(NULL, " ");
        a++;
    }
    return a;
}




//int elrs_data(    char * data1,int * data4s ) {
//    /*elrs协议数组存放地址*/
////    char data1[] = "C8 18 16 DF 23 5F C4 C9 F7 8B 5F FC E2 17 BF F8 C5 2F 7E 01 00 00 4C 7C E2 BA";
//    int data3[26];
//    long data4ss[16]={0};
//    unsigned char Bool_Data[300];
//    unsigned int  n=0;  //中间变量存放数组
//    unsigned int  sum_data[11]={0};
//    //返回16进制数据
////    int size = sizeof(data3) / sizeof(data3[0]);
////    return_0xdata(data1, data3, size);
//
//    /*将16进制数据存放到2进制数组中*/
//    for(int i=0;i<26;i++)
//    {
//        for(int j=0;j<8;j++)
//        {
//            Bool_Data[j+n]=data1[i]&(0x80>>j);  // 在stm32的数组中--这个数据的存放是int类型的16进制不能用字符串类型来解析
//            Bool_Data[j+n]=Bool_Data[j+n]>>7-j;
//        }
//        n+=8;
//    }
//    n=24;
//    //连续11位解析数据
//    for (int j = 0; j < 16; ++j) {
//        for (int i = 0; i < 11; ++i)
//        {
//            sum_data[i]= (Bool_Data[n+i])*(int)(pow(2,10-i)); //计算乘方运算
//            data4s[j]=sum_data[i]+data4s[j];
//            data4ss[j]= data4s[j];
//        }
//        n+=11;
//
//    }
//    return 0;
//}








int elrs_data(    char * DataA,int * channels ) {


channels[0] = ((DataA[3] >> 0) | (DataA[4] << 8)) & 0x07FF;
channels[1] = ((DataA[4] >> 3) | (DataA[5] << 5)) & 0x07FF;
channels[2] = ((DataA[5] >> 6) | (DataA[6] << 2) | (DataA[7] << 10)) & 0x07FF;
channels[3] = ((DataA[7] >> 1) | (DataA[8] << 7)) & 0x07FF;
channels[4] = ((DataA[8] >> 4) | (DataA[9] << 4)) & 0x07FF;
channels[5] = ((DataA[9] >> 7) | (DataA[10] << 1) | (DataA[11] << 9)) & 0x07FF;
channels[6] = ((DataA[11] >> 2) | (DataA[12] << 6)) & 0x07FF;
channels[7] = ((DataA[12] >> 5) | (DataA[13] << 3)) & 0x07FF;


}




//11001000=00011000=00010110    =11011011=001  00011100111  11011101011  01111110000 0111=1111000 0=01011111=11 111100=10100  010=011
//11100  =00000000=001  01111=010111 11=11111001=1  1001010=0000  0111=0000000  0=00000000=01  001100=01111  100=11100010=---------------



//HAL_UART_Receive_DMA(&huart3, R_data, sizeof(R_data));
//if(R_data[0]==0xc8)
//{
//if(R_data[2]==0x16)
//{
//elrs_data(R_data,T_data) ;
//
//for(int i=0;i<8;i++)
//{
//sprintf(datapro1, "%d--" ,T_data[i]);
//HAL_UART_Transmit(&huart1, datapro1, sizeof(datapro1),100);}
//
//
//
//
//data1= (1850-aaa/2);
//aaa=T_data[2];
//b=T_data[4];
//}
//
//
//
//
//for(int i=0;i<8;i++)
//{
//
//T_data[i]=0;
//}
//
//
//
//
//
//if(b<1000)
//{
//
//HAL_TIM_OC_Stop_IT(&htim1, TIM_CHANNEL_1);
//}
//else
//HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1);
//
//
//
//}


